﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Capa_Negocio.Gestionar_SalaEnsayo;
using Capa_Dominio;

namespace Studio7i.Controllers
{
    public class LocalController : Controller
    {
        //
        #region Dependencias que se inyectan con Spring.NET
        IAdministracionSalaEnsayo AdminService = null;
        #endregion 

        // GET: /Local/

        public ActionResult Index()
        {
            ICollection<Local> modelo = AdminService.ListarLocales();
            TempData["distritos"] = ListadoDistrito();
            return View(modelo);
        }

        private ICollection<SelectListItem> ListadoDistrito()
        {
            ICollection<SelectListItem> distritos = new List<SelectListItem>();
            distritos.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione.." });
            foreach (Distrito dis in AdminService.listarDistritos())
                distritos.Add(new SelectListItem()
                {
                    Value = dis.CodigoDistrito.ToString(),
                    Text = dis.NombreDistrito
                });
            return distritos;
        }

        public ActionResult Creacion() // Genera la vista Views/Local/Creacion.aspx
        {
            TempData["distritos"] = ListadoDistrito();
            return View();
        }

        [HttpPost]
        public ActionResult Crear(FormCollection formulario) // Recibe el formulario de Creacion.aspx
        {
            // Capturamos los datos del formulario enviado desde Creacion.aspx
            // Coordinamos con el negocio para la funcionalidad
            try
            {
                int codigoDistrito = int.Parse(formulario["codDistrito"]);
                string direccion = formulario["Direccion"];
                string nombreLocal = formulario["NombreLocal"];
                Local localCreado = AdminService.CrearLocal(nombreLocal, codigoDistrito, direccion, true);
                TempData["mensaje"] = "Local " + localCreado.CodigoLocal + " creado exitosamente";
                return RedirectToAction("Index"); // Todo bien, a la lista
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message); // Agregamos el error a mostrarse
                return View("Creacion"); // Problemas! De nuevo a Creacion.aspx
            }
        }
    }
}
